package com.ruoyi.web.utils;



import com.ruoyi.web.entity.WxResult;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * 返回结果实体类
 */
@ApiModel(description = "请求结果")
@Data
public class ResponseResult<T> extends WxResult implements Serializable {
    @ApiModelProperty("状态码")
        private int code;       // 状态码
    @ApiModelProperty("返回的信息")
        private String msg;     // 返回的信息
    @ApiModelProperty("返回的数据")
        private T data;         // 返回的数据
        /**
         * 成功时候的调用（有数据）
         * @param data
         * @param <T>
         * @return
         */
        public static <T> ResponseResult<T> success(T data){
            return new ResponseResult<T>(data);
        }

        /**
         * 成功时候的调用（无数据）
         * @param <T>
         * @return
         */
        public static <T> ResponseResult<T> success(){
            return new ResponseResult<T>();
        }

        /**
         * 异常时候的调用（有msg参数）
         * @param msg
         * @param <T>
         * @return
         */
        public static <T> ResponseResult<T> error(String msg){
            return new ResponseResult<T>(msg);
        }

        /**
         * 异常时候的调用（无msg参数）
         * @param <T>
         * @return
         */
        public static <T> ResponseResult<T> error(){
            return new ResponseResult<T>("error");
        }

        private ResponseResult(T data) {
            this.code = 200;
            this.msg = "success";
            this.data = data;
        }

        private ResponseResult() {
            this.code = 200;
            this.msg = "success";
        }

        private ResponseResult(String msg) {
            this.code = 400;
            this.msg = msg;
        }

        public int getCode() {
            return code;
        }

        public String getMsg() {
            return msg;
        }

        public T getData() {
            return data;
        }


}
